#pragma once

#include <string>

class CBase64 {
public:
    CBase64(){};
    ~CBase64(){};

    // DataByte [in]输入的数据长度,以字节为单位
    std::string Encode(const char* Data, int DataByte);

    // DataByte [in]输入的数据长度,以字节为单位
    // OutByte [out]输出的数据长度,以字节为单位, 请不要通过返回值计算 输出数据的长度
    std::string Decode(const char* Data, int DataByte, int& OutByte);
};


// 以下是读写图片的调用代码：
// bool CBusinessDataMgr::ReadPhotoFile(std::basic_string<TCHAR> strFileName,std::string &strData)
// {
//     HANDLE hFile;
//     hFile = CreateFile(strFileName.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

//     if (hFile == INVALID_HANDLE_VALUE)
//     {
//         return false;
//     }

//     DWORD dFileSize = GetFileSize(hFile, NULL);
//     char * pBuffer = new char[dFileSize + 1];

//     if(pBuffer == NULL)
//         return false;

//     memset(pBuffer, 0, dFileSize);

//     DWORD dReadSize(0);
//     if (!ReadFile(hFile, pBuffer, dFileSize, &dReadSize, NULL))
//     {
//         delete[]pBuffer;
//         CloseHandle(hFile);
//         return false;
//     }

//     CBase64 base64;
//     strData = "";
//     strData = base64.Encode((const char*)pBuffer, dReadSize);

//     delete[]pBuffer;
//     CloseHandle(hFile);
//     return true;
// }

// bool CBusinessDataMgr::WritePhotoFile(std::basic_string<TCHAR> strFileName, std::string &strData)
// {
//     HANDLE hFile;
//     hFile = CreateFile(strFileName.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

//     if (hFile == INVALID_HANDLE_VALUE)
//     {
//         return false;
//     }

//     CBase64 base64;
//     int datalen(0);
//     DWORD dwritelen(0);
//     std::string strdcode = base64.Decode(strData.data(),strData.size(), datalen);
//     if (!WriteFile(hFile, strdcode.data(), datalen, &dwritelen, NULL))
//     {
//         CloseHandle(hFile);
//         return false;
//     }
//     CloseHandle(hFile);
//     return true;
// }